import md5 from 'js-md5'
// 一、签名参数sign生成的方法

// 第1步: 将所有参数（注意是所有参数），除去sign本身，以及值是空的参数，按参数名字母升序排序。

// 第2步: 然后把排序后的参数按参数1值1参数2值2…参数n值n（这里的参数和值必须是传输参数的原始值，不能是经过处理的，如不能将&quot;转成”后再拼接）的方式
// 拼接成k1=v1&k2=v2&time=vtime的一个字符串。

// 第3步: 把分配给接入方的验证密钥key拼接在第2步得到的字符串后面k1=v1&k2=v2&time=vtime&key=secret。

// 第2步: 在上一步得到的字符串前面加上验证密钥key(这里的密钥key是接口提供方分配给接口接入方的)，然后计算md5值，得到32位字符串，然后转成大写.

// 第4步: 计算第3步字符串的md5值(32位)，然后转成大写,得到的字符串作为sign的值。

let sign = function(AppKey, AppSecret,device,type, json) {
    var arr = [];
    var vtime = Date.parse(new Date()).toString(); //精确到毫秒
    vtime = vtime.substr(0, 10); //精确到秒
    json['timestamp'] = vtime
    json['device'] =  device.slice(0,1).toUpperCase() + device.slice(1);
    json['type'] = type
	
    // json.push({
    // 	timestamp:vtime
    // })
    // console.log(json,'sssss');
    Object.keys(json).forEach(item => {
        if (item != 'sign') {
            arr.push(item);
        }
    })
    //将元素按照 ASCII 字符顺序进行升序排列（也就是所谓的自然顺序）
    arr = arr.sort();

    var str = '';
    for (let i = 0; i < arr.length; i++) {
        if (json[arr[i]] === '') continue;
        if (str !== '') str += '&';
        str += arr[i] + '=' + encodeURI(json[arr[i]])
    }

    const app_secret = AppSecret
    const app_id = AppKey
    // console.log(app_secret);
    // console.log(app_id);
    str += '&key=' + md5(app_secret + app_id)
    console.log(str,'strstr');
    var signature = md5(str)
    // console.log('组装完成',str,app_secret,app_id);
    return Object.assign({}, json, {
        timestamp: vtime,
        // appid: app_id,
        sign: signature.toUpperCase()
    });
}

export default sign